package com.djf.djfclickhouse.service;

import com.djf.djfclickhouse.entity.Order;
import java.util.List;

/**
 * 订单服务接口
 */
public interface OrderService {
    
    /**
     * 创建订单
     * @param order 订单对象
     * @return 是否成功
     */
    boolean createOrder(Order order);
    
    /**
     * 批量创建订单
     * @param orders 订单列表
     * @return 是否成功
     */
    boolean batchCreateOrder(List<Order> orders);
    
    /**
     * 根据ID查询订单
     * @param id 订单ID
     * @return 订单对象
     */
    Order getOrderById(Long id);
    
    /**
     * 根据订单号查询订单
     * @param orderNo 订单号
     * @return 订单对象
     */
    Order getOrderByOrderNo(String orderNo);
    
    /**
     * 根据用户ID查询订单列表
     * @param userId 用户ID
     * @return 订单列表
     */
    List<Order> getOrdersByUserId(Long userId);
    
    /**
     * 分页查询订单
     * @param pageNum 页码（从1开始）
     * @param pageSize 每页大小
     * @return 订单列表
     */
    List<Order> getOrdersWithPage(int pageNum, int pageSize);
    
    /**
     * 统计订单数量
     * @param userId 用户ID（可选）
     * @param orderStatus 订单状态（可选）
     * @return 订单数量
     */
    long countOrders(Long userId, Integer orderStatus);
    
    /**
     * 更新订单状态
     * @param id 订单ID
     * @param orderStatus 新的订单状态
     * @return 是否成功
     */
    boolean updateOrderStatus(Long id, Integer orderStatus);
    
    /**
     * 删除订单（逻辑删除）
     * @param id 订单ID
     * @return 是否成功
     */
    boolean deleteOrder(Long id);
    
    /**
     * 物理删除订单（谨慎使用）
     * @param id 订单ID
     * @return 是否成功
     */
    boolean physicalDeleteOrder(Long id);
}